import time

from selenium import webdriver
from selenium.webdriver.common.by import By

# 步骤
# 1.打开浏览器
# 2.访问网址
# 3.找到搜索框
# 4.输入书名
# 5.点击搜索按钮
# 打开浏览器
driver = webdriver.Chrome()
# 访问网址
driver.get('http://novel.hctestedu.com/')
# 打开网址后先暂停3秒，缓冲一下
# time.sleep(3)

# 1.根据id选择器定位
# send_keys为输入的内容
# id是唯一的，有id可以使用id定位，但需要考虑id的动态问题（数字或者很长的字母，刷新一次变化一次），若是动态id，则无法使用其定位
# driver.find_element(By.ID, 'searchKey').send_keys('云上')

# 2.根据name定位 -名称选择器，name一般是唯一的，但name可能重复，所以不建议使用name定位
# driver.find_element(By.NAME, 'searchKey').send_keys('云上')

# 3.class_name-类名选择器 一般不唯一，不适合定位，适合批量处理内容
# driver.find_element(By.CLASS_NAME, 's_int').send_keys('云上')

# 4.tag_name-标签名选择器，通过标签名查找元素，标签名一般不唯一，适合批量处理内容，若使用标签查找，则默认找到第一个
# driver.find_element(By.TAG_NAME, 'input').send_keys('云上')

# 5.link_text-链接文本选择器，只作用于a标签，通过链接文本定位超链接
# 主要用于超链接进行定位，全部匹配文本值，使用在链接位置处
# click()表示点击
# driver.find_element(By.LINK_TEXT, '全部作品').click()

# 6.partial_link_text-部分链接文本选择器，只作用于a标签，通过部分链接文本定位超链接
# 基于链接的部分文字来定位，partial_link_text模糊匹配，模糊查询匹配到多个符合调节的元素，选取第一个，同样也只使用在链接位置处
# driver.find_element(By.PARTIAL_LINK_TEXT, '全部').click()
# driver.find_element(By.PARTIAL_LINK_TEXT, '作品').click()
# link_text和partial_link_text的区别：link_text只能定位完整的文本，partial_link_text可以定位部分文本


# css和xpath更加灵活
# css分类：.代表class，#代表id，>代表子元素，空格代表后台（儿子、孙子..），+代表兄弟
# driver.find_element(By.CSS_SELECTOR, '#searchKey').send_keys('云上')
# driver.find_element(By.CSS_SELECTOR, '.s_int').send_keys('云上')
# 找到输入框，输入云上后点击搜索
driver.find_element(By.CSS_SELECTOR, 'div.search>input').send_keys('云上')
driver.find_element(By.CSS_SELECTOR, 'div.search>input+label').click()
# 等待3s
time.sleep(3)
# 关闭浏览器
driver.quit()
